#ifndef NODO_H
#define NODO_H
#include <iostream>

using namespace std;

template <class T> 
class Nodo{
      T dato;
      Nodo<T> *sig,*ant;

public:    
       bool operator= (const Nodo<T> &c);
       Nodo(){
          //    cout <<"\n ----------------------------------------"<<endl;              
              //cout <<" \t --> Nodo::Nodo(): " << endl;
           //   sig=(Nodo<T> *) new Nodo<T> *;
          //    ant=(Nodo<T> *) new Nodo<T> *;              
              ant=sig=NULL;
 
              }
       Nodo(const T datos){
         //     cout <<"\n ----------------------------------------"<<endl;
         //     cout << "Nodo::Nodo(const T): " << endl;
              dato=datos;
              ant=NULL;
              sig=NULL;
 
              }
//       Nodo(T datos,Nodo<T> *sigui,Nodo<T> *ante);
       Nodo(const Nodo<T> &n);
       ~Nodo(){
               
               }

       T * leerDato();
       T & rleerDato();       
       void escribirDato( T &valor);
       
       Nodo<T> * siguiente(){return sig;};
       void siguiente( Nodo<T> *sigui){sig=sigui;};
       Nodo<T> * anterior(){return ant;};       
       void  anterior( Nodo<T> *ante){ant=ante;}
       

};
/*
template <class T> Nodo<T>::Nodo(T datos=-1,Nodo<T> *sigui=NULL,Nodo<T> *ante=NULL)
{
  dato=datos;       
  sig=sigui;
  ant=ante;
}
*/
template <class T>  Nodo<T>::Nodo(const Nodo<T> &list)
{}
template <class T> T * Nodo<T>::leerDato(){
         
         return &dato;}
template <class T> T & Nodo<T>::rleerDato(){
          T &datoAux=dato;         
         return datoAux;}
template <class T>  void Nodo<T>::escribirDato( T &valor){dato=valor;}
template <class T> bool Nodo<T>::operator= (const Nodo<T> &c){
//         cout<<"Nodo::operator=():"<<endl;
         dato=c.dato;
         sig=c.sig;
         ant=c.ant;
//         cout<<"\t dato= "<<dato<<endl;
}

#endif
